#ifndef _CORE_H_
#define _CORE_H_

#include <vector>
#include <list>
#include "core_types.h"

using std::vector;
using std::list;

class Vertex {
	public:
		id_t id;
		Vec3f position;
		Vec3f normal;
		Vec3f texcoord; ///< @TODO Consider whether we *need* support for 3d textures
};

class Triangle {
	public:
		id_t id;
		id_t vertices[3];
		id_t material;
		id_t lod; ///< Level of detail
};

class Mesh {
	public:
		id_t id;
		vector<Vertex> vertices;
		vector<Triangle> triangles;
		list<Mesh> submeshes;
		Vec3f position;
		Rotationf orientation;
};

#endif // _CORE_H_
